home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 201-225 / disk_222 / plplot / src / source.zoo / plgrid3.c < prev    next >
C/C++ Source or Header  |  1989-05-15  |  3KB  |  97 lines

  1. /* Routine to draw a grid around the back side of the 3d plot */
  2. /* wih hidden line removal */
  3.  
  4. #include "plplot.h"
  5. #include <math.h>
  6.  
  7. void plgrid3(tick)
  8. float tick;
  9. {
  10.     float xmin, ymin, zmin, xmax, ymax, zmax, zscale;
  11.     float cxx, cxy, cyx, cyy, cyz;
  12.     int u[3], v[3];
  13.     int nsub, mode, prec;
  14.     float tp;
  15.  
  16.     gw3wc(&cxx,&cxy,&cyx,&cyy,&cyz);
  17.     gdom(&xmin,&xmax,&ymin,&ymax);
  18.     grange(&zscale,&zmin,&zmax);
  19.  
  20.     nsub = 0;
  21.     pldtik(zmin,zmax,&tick,&nsub,&mode,&prec);
  22.     tp = tick * floor(zmin/tick) + tick;
  23.  
  24.     if (cxx >= 0.0 && cxy <= 0.0)  {
  25.         while ( tp <= zmax ) {
  26.             u[0] = wcpcx(w3wcx(xmin,ymax,tp));
  27.             v[0] = wcpcy(w3wcy(xmin,ymax,tp));
  28.             u[1] = wcpcx(w3wcx(xmax,ymax,tp));
  29.             v[1] = wcpcy(w3wcy(xmax,ymax,tp));
  30.             u[2] = wcpcx(w3wcx(xmax,ymin,tp));
  31.             v[2] = wcpcy(w3wcy(xmax,ymin,tp));
  32.             plnxtv(u,v,3,2);
  33.  
  34.             tp += tick;
  35.         }
  36.         u[0] = wcpcx(w3wcx(xmax,ymax,zmin));
  37.         v[0] = wcpcy(w3wcy(xmax,ymax,zmin));
  38.         u[1] = wcpcx(w3wcx(xmax,ymax,zmax));
  39.         v[1] = wcpcy(w3wcy(xmax,ymax,zmax));
  40.         plnxtv(u,v,2,2);
  41.     }
  42.     else if(cxx <= 0.0  && cxy <= 0.0)  {
  43.         while ( tp <= zmax ) {
  44.             u[0] = wcpcx(w3wcx(xmax,ymax,tp));
  45.             v[0] = wcpcy(w3wcy(xmax,ymax,tp));
  46.             u[1] = wcpcx(w3wcx(xmax,ymin,tp));
  47.             v[1] = wcpcy(w3wcy(xmax,ymin,tp));
  48.             u[2] = wcpcx(w3wcx(xmin,ymin,tp));
  49.             v[2] = wcpcy(w3wcy(xmin,ymin,tp));
  50.             plnxtv(u,v,3,2);
  51.  
  52.             tp += tick;
  53.         }
  54.         u[0] = wcpcx(w3wcx(xmax,ymin,zmin));
  55.         v[0] = wcpcy(w3wcy(xmax,ymin,zmin));
  56.         u[1] = wcpcx(w3wcx(xmax,ymin,zmax));
  57.         v[1] = wcpcy(w3wcy(xmax,ymin,zmax));
  58.         plnxtv(u,v,2,2);
  59.     }
  60.     else if(cxx <= 0.0  && cxy >= 0.0)  {
  61.         while ( tp <= zmax ) {
  62.             u[0] = wcpcx(w3wcx(xmax,ymin,tp));
  63.             v[0] = wcpcy(w3wcy(xmax,ymin,tp));
  64.             u[1] = wcpcx(w3wcx(xmin,ymin,tp));
  65.             v[1] = wcpcy(w3wcy(xmin,ymin,tp));
  66.             u[2] = wcpcx(w3wcx(xmin,ymax,tp));
  67.             v[2] = wcpcy(w3wcy(xmin,ymax,tp));
  68.             plnxtv(u,v,3,2);
  69.  
  70.             tp += tick;
  71.         }
  72.         u[0] = wcpcx(w3wcx(xmin,ymin,zmin));
  73.         v[0] = wcpcy(w3wcy(xmin,ymin,zmin));
  74.         u[1] = wcpcx(w3wcx(xmin,ymin,zmax));
  75.         v[1] = wcpcy(w3wcy(xmin,ymin,zmax));
  76.         plnxtv(u,v,2,2);
  77.     }
  78.     else if(cxx >= 0.0  && cxy >= 0.0)  {
  79.         while ( tp <= zmax ) {
  80.             u[0] = wcpcx(w3wcx(xmin,ymin,tp));
  81.             v[0] = wcpcy(w3wcy(xmin,ymin,tp));
  82.             u[1] = wcpcx(w3wcx(xmin,ymax,tp));
  83.             v[1] = wcpcy(w3wcy(xmin,ymax,tp));
  84.             u[2] = wcpcx(w3wcx(xmax,ymax,tp));
  85.             v[2] = wcpcy(w3wcy(xmax,ymax,tp));
  86.             plnxtv(u,v,3,2);
  87.  
  88.             tp += tick;
  89.         }
  90.         u[0] = wcpcx(w3wcx(xmin,ymax,zmin));
  91.         v[0] = wcpcy(w3wcy(xmin,ymax,zmin));
  92.         u[1] = wcpcx(w3wcx(xmin,ymax,zmax));
  93.         v[1] = wcpcy(w3wcy(xmin,ymax,zmax));
  94.         plnxtv(u,v,2,2);
  95.     }
  96. }
  97.